package com.investment.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.investment.model.entity.Factor;

import java.util.List;
import java.util.Map;

/**
 * 因子服务接口
 */
public interface FactorService {

    /**
     * 分页查询因子列表
     *
     * @param params 查询参数
     * @param page   页码
     * @param size   每页大小
     * @return 因子分页数据
     */
    IPage<Factor> listByPage(Map<String, Object> params, Integer page, Integer size);

    /**
     * 根据因子代码查询因子
     *
     * @param code 因子代码
     * @return 因子信息
     */
    Factor getByCode(String code);

    /**
     * 根据ID查询因子
     *
     * @param id 因子ID
     * @return 因子信息
     */
    Factor getById(Long id);

    /**
     * 查询因子详情
     *
     * @param id 因子ID
     * @return 因子详情
     */
    Map<String, Object> getFactorDetail(Long id);

    /**
     * 添加因子
     *
     * @param factor 因子实体
     * @return 因子ID
     */
    Long addFactor(Factor factor);

    /**
     * 更新因子
     *
     * @param factor 因子实体
     * @return 是否成功
     */
    boolean updateFactor(Factor factor);

    /**
     * 删除因子
     *
     * @param id 因子ID
     * @return 是否成功
     */
    boolean deleteFactor(Long id);

    /**
     * 批量删除因子
     *
     * @param ids 因子ID列表
     * @return 是否成功
     */
    boolean batchDeleteFactor(List<Long> ids);
    
    /**
     * 根据类型查询因子列表
     *
     * @param type 因子类型
     * @return 因子列表
     */
    List<Factor> listByType(Integer type);
    
    /**
     * 根据创建者ID查询因子列表
     *
     * @param creatorId 创建者ID
     * @return 因子列表
     */
    List<Factor> listByCreatorId(Long creatorId);
} 